package main

import "net"

// User 表示一个连接到服务器的用户
type User struct {
	Name string
	Addr string
	Chan chan string
	conn net.Conn
}

// NewUser 创建一个新的用户实例，使用传入的网络连接。
func NewUser(conn net.Conn) *User {
	userAddr := conn.RemoteAddr().String()

	user := &User{userAddr, userAddr, make(chan string), conn}

	// 启动一个 goroutine 来监听用户消息
	go user.ListenMessage()

	return user
}

// ListenMessage 用于监听用户通道 Chan 上的消息，并将其发送回用户。
func (user *User) ListenMessage() {
	for {
		msg := <-user.Chan
		user.conn.Write([]byte(msg + "\n"))
	}
}
